
<!doctype html>
<html lang="zh" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
        <meta name="description" content="脚本文档">
      
      
        <meta name="author" content="Logan">
      
      
        <link rel="canonical" href="http://localhost:8000/installation/web_proxy_services/">
      
      
      
      
      <link rel="icon" href="../../image/favicon.ico">
      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
    
    
      
        <title>Web服务与代理 - 运维无忧文档</title>
      
    
    
      <link rel="stylesheet" href="../../assets/stylesheets/main.a40c8224.min.css">
      
        
        <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
      
      


    
    
      
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
      <link rel="stylesheet" href="../../css/extra.css">
    
      <link rel="stylesheet" href="../../css/prism.css">
    
    <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      

    
    
    
  </head>
  
  
    
    
      
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue">
  
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#web" class="md-skip">
          跳转至
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

  

<header class="md-header md-header--shadow" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="页眉">
    <a href="../.." title="运维无忧文档" class="md-header__button md-logo" aria-label="运维无忧文档" data-md-component="logo">
      
  <img src="../../image/logo.png" alt="logo">

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            运维无忧文档
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              Web服务与代理
            
          </span>
        </div>
      </div>
    </div>
    
      
        <form class="md-header__option" data-md-component="palette">
  
    
    
    
    <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue"  aria-label="Switch to dark mode"  type="radio" name="__palette" id="__palette_0">
    
      <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
      </label>
    
  
    
    
    
    <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="blue"  aria-label="Switch to light mode"  type="radio" name="__palette" id="__palette_1">
    
      <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
      </label>
    
  
</form>
      
    
    
      <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
    
    
    
      <label class="md-header__button md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="查找">
        
        <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
          
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
        </button>
      </nav>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            正在初始化搜索引擎
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
      <div class="md-header__source">
        <a href="https://git.opsx.vip/docs/wuyou.run.git" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  </div>
  <div class="md-source__repository">
    wuyou.run
  </div>
</a>
      </div>
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    



<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="../.." title="运维无忧文档" class="md-nav__button md-logo" aria-label="运维无忧文档" data-md-component="logo">
      
  <img src="../../image/logo.png" alt="logo">

    </a>
    运维无忧文档
  </label>
  
    <div class="md-nav__source">
      <a href="https://git.opsx.vip/docs/wuyou.run.git" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  </div>
  <div class="md-source__repository">
    wuyou.run
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
  
  
  
  
    <li class="md-nav__item">
      <a href="../.." class="md-nav__link">
        
  
  <span class="md-ellipsis">
    首页
  </span>
  

      </a>
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
        
          
          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Linux基础设施
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2">
            <span class="md-nav__icon md-icon"></span>
            Linux基础设施
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1" >
        
          
          <label class="md-nav__link" for="__nav_2_1" id="__nav_2_1_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    基础环境配置
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_1">
            <span class="md-nav__icon md-icon"></span>
            基础环境配置
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../system_init/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    系统初始化
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../dev_env/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    开发环境搭建
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2" >
        
          
          <label class="md-nav__link" for="__nav_2_2" id="__nav_2_2_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    常用服务部署
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_2">
            <span class="md-nav__icon md-icon"></span>
            常用服务部署
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2_1" >
        
          
          <label class="md-nav__link" for="__nav_2_2_1" id="__nav_2_2_1_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Web服务与代理
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_2_1_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_2_1">
            <span class="md-nav__icon md-icon"></span>
            Web服务与代理
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../web_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Web服务
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../proxy_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    代理服务
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../services-loadbalancing/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    负载均衡服务
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../cache_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    缓存加速服务
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2_2" >
        
          
          <label class="md-nav__link" for="__nav_2_2_2" id="__nav_2_2_2_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    数据存储
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_2_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_2_2">
            <span class="md-nav__icon md-icon"></span>
            数据存储
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../database_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    数据库服务
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../storage_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    文件存储服务
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2_3" >
        
          
          <label class="md-nav__link" for="__nav_2_2_3" id="__nav_2_2_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    监控与日志
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_2_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_2_3">
            <span class="md-nav__icon md-icon"></span>
            监控与日志
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../monitoring_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    监控系统
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../logging_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    日志管理
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../message_queue_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    消息队列
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3" >
        
          
          <label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    系统运维
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_3">
            <span class="md-nav__icon md-icon"></span>
            系统运维
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../storage/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    存储与备份
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../lvm/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    LVM存储管理
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../network/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    网络服务配置
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../monitor/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    监控与日志
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
        
          
          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    容器与编排
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_3">
            <span class="md-nav__icon md-icon"></span>
            容器与编排
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
        
          
          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Docker
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_3_1">
            <span class="md-nav__icon md-icon"></span>
            Docker
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    基础安装
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker/build/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    镜像构建
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker/services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    常用服务部署
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker/network-storage/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    网络与存储
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker-compose/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Docker Compose
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
        
          
          <label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Kubernetes
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_3_3">
            <span class="md-nav__icon md-icon"></span>
            Kubernetes
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../kubernetes/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    集群部署
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../kubernetes/resources/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    资源管理
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../kubernetes/operations/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    运维操作
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../kubernetes/best-practices/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    最佳实践
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
        
          
          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    DevOps工具链
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_4">
            <span class="md-nav__icon md-icon"></span>
            DevOps工具链
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../cicd/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    CI/CD流水线
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../devops/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    自动化运维
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
        
          
          <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Shell 快速入门
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_5">
            <span class="md-nav__icon md-icon"></span>
            Shell 快速入门
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/introduction/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Linux 基础命令
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/commands/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    常用命令集
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/variables_and_data_types/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    变量和数据类型
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/control_flow/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    控制流程 (if、else、for、while)
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/functions/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Shell函数
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/text_processing/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    文本处理三剑客
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/scripts/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Shell脚本实战
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="目录">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      目录
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#web_1" class="md-nav__link">
    <span class="md-ellipsis">
      Web服务器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Web服务器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#nginx-web" class="md-nav__link">
    <span class="md-ellipsis">
      Nginx 高性能Web服务器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Nginx 高性能Web服务器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_1" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_2" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#https" class="md-nav__link">
    <span class="md-ellipsis">
      HTTPS配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_3" class="md-nav__link">
    <span class="md-ellipsis">
      负载均衡配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#apache-http-server" class="md-nav__link">
    <span class="md-ellipsis">
      Apache HTTP Server
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Apache HTTP Server">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_4" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_5" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#https_1" class="md-nav__link">
    <span class="md-ellipsis">
      HTTPS配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_6" class="md-nav__link">
    <span class="md-ellipsis">
      负载均衡配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#caddy-web" class="md-nav__link">
    <span class="md-ellipsis">
      Caddy 现代化Web服务器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Caddy 现代化Web服务器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_7" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_8" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#https_2" class="md-nav__link">
    <span class="md-ellipsis">
      自动HTTPS配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_9" class="md-nav__link">
    <span class="md-ellipsis">
      反向代理配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_10" class="md-nav__link">
    <span class="md-ellipsis">
      反向代理与负载均衡
    </span>
  </a>
  
    <nav class="md-nav" aria-label="反向代理与负载均衡">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#haproxy" class="md-nav__link">
    <span class="md-ellipsis">
      HAProxy 高性能负载均衡器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="HAProxy 高性能负载均衡器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_11" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_12" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ssl" class="md-nav__link">
    <span class="md-ellipsis">
      SSL终端配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_13" class="md-nav__link">
    <span class="md-ellipsis">
      会话持久化配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#squid" class="md-nav__link">
    <span class="md-ellipsis">
      Squid 缓存代理
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Squid 缓存代理">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_14" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_15" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_16" class="md-nav__link">
    <span class="md-ellipsis">
      透明代理配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_17" class="md-nav__link">
    <span class="md-ellipsis">
      反向代理配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#traefik" class="md-nav__link">
    <span class="md-ellipsis">
      Traefik 现代化边缘路由器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Traefik 现代化边缘路由器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_18" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_19" class="md-nav__link">
    <span class="md-ellipsis">
      基本路由配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#https_3" class="md-nav__link">
    <span class="md-ellipsis">
      自动HTTPS配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#docker" class="md-nav__link">
    <span class="md-ellipsis">
      Docker集成配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#web_2" class="md-nav__link">
    <span class="md-ellipsis">
      Web应用防火墙
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Web应用防火墙">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#modsecurity-apachenginx-waf" class="md-nav__link">
    <span class="md-ellipsis">
      ModSecurity (Apache/Nginx WAF)
    </span>
  </a>
  
    <nav class="md-nav" aria-label="ModSecurity (Apache/Nginx WAF)">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#apache" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署(Apache)
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#nginx" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署(Nginx)
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#apache_1" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置(Apache)
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#nginx_1" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置(Nginx)
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#naxsi-nginx-waf" class="md-nav__link">
    <span class="md-ellipsis">
      NAXSI (Nginx WAF)
    </span>
  </a>
  
    <nav class="md-nav" aria-label="NAXSI (Nginx WAF)">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_20" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_21" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#web_3" class="md-nav__link">
    <span class="md-ellipsis">
      Web性能优化
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Web性能优化">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#varnish" class="md-nav__link">
    <span class="md-ellipsis">
      Varnish 缓存加速器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Varnish 缓存加速器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_22" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_23" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#nginx-pagespeed" class="md-nav__link">
    <span class="md-ellipsis">
      Nginx PageSpeed模块
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Nginx PageSpeed模块">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_24" class="md-nav__link">
    <span class="md-ellipsis">
      安装部署
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_25" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  

  
  


<h1 id="web">Web服务与代理</h1>
<p>@author Loganli</p>
<h2 id="web_1">Web服务器</h2>
<h3 id="nginx-web">Nginx 高性能Web服务器</h3>
<h4 id="_1">安装部署</h4>
<pre><code class="language-bash"># CentOS/RHEL系统
yum install -y epel-release
yum install -y nginx

# 或者使用官方仓库
cat &gt; /etc/yum.repos.d/nginx.repo &lt;&lt; EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=0
enabled=1
EOF
yum install -y nginx

# Debian/Ubuntu系统
apt-get update
apt-get install -y nginx

# 启动服务
systemctl start nginx
systemctl enable nginx
systemctl status nginx
</code></pre>
<h4 id="_2">基本配置</h4>
<p>Nginx的主配置文件是<code>/etc/nginx/nginx.conf</code>，网站配置通常放在<code>/etc/nginx/conf.d/</code>目录：</p>
<pre><code class="language-nginx"># /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  example.com www.example.com;
    root         /usr/share/nginx/html;
    index        index.html index.htm;

    # 访问日志
    access_log   /var/log/nginx/example.com.access.log main;
    error_log    /var/log/nginx/example.com.error.log;

    # 静态文件缓存
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
    }

    # PHP-FPM配置示例
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
</code></pre>
<h4 id="https">HTTPS配置</h4>
<pre><code class="language-nginx"># 生成自签名证书(测试用)
mkdir -p /etc/nginx/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

# HTTPS服务器配置
server {
    listen       443 ssl;
    server_name  example.com www.example.com;
    root         /usr/share/nginx/html;

    ssl_certificate      /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key  /etc/nginx/ssl/nginx.key;
    ssl_protocols        TLSv1.2 TLSv1.3;
    ssl_ciphers          HIGH:!aNULL:!MD5;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;

    # HTTP重定向到HTTPS
    if ($scheme != &quot;https&quot;) {
        return 301 https://$host$request_uri;
    }
}
</code></pre>
<h4 id="_3">负载均衡配置</h4>
<pre><code class="language-nginx">upstream backend {
    server 192.168.1.101:80 weight=3;
    server 192.168.1.102:80 weight=1;
    server 192.168.1.103:80 backup;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
</code></pre>
<h3 id="apache-http-server">Apache HTTP Server</h3>
<h4 id="_4">安装部署</h4>
<pre><code class="language-bash"># CentOS/RHEL系统
yum install -y httpd mod_ssl

# Debian/Ubuntu系统
apt-get update
apt-get install -y apache2

# 启动服务
# CentOS/RHEL
systemctl start httpd
systemctl enable httpd

# Debian/Ubuntu
systemctl start apache2
systemctl enable apache2
</code></pre>
<h4 id="_5">基本配置</h4>
<p>Apache的主配置文件在CentOS为<code>/etc/httpd/conf/httpd.conf</code>，Ubuntu为<code>/etc/apache2/apache2.conf</code>：</p>
<pre><code class="language-apache"># 虚拟主机配置 (/etc/httpd/conf.d/vhost.conf 或 /etc/apache2/sites-available/example.com.conf)
&lt;VirtualHost *:80&gt;
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html/example

    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log combined

    &lt;Directory /var/www/html/example&gt;
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>
<h4 id="https_1">HTTPS配置</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y mod_ssl

# Debian/Ubuntu
a2enmod ssl
</code></pre>
<pre><code class="language-apache">&lt;VirtualHost *:443&gt;
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html/example

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/example.com.crt
    SSLCertificateKeyFile /etc/ssl/private/example.com.key

    &lt;Directory /var/www/html/example&gt;
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>
<h4 id="_6">负载均衡配置</h4>
<pre><code class="language-bash"># 启用必要模块
# CentOS/RHEL
# 模块已内置

# Debian/Ubuntu
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
</code></pre>
<pre><code class="language-apache">&lt;Proxy balancer://mycluster&gt;
    BalancerMember http://192.168.1.101:80 loadfactor=3
    BalancerMember http://192.168.1.102:80 loadfactor=1
    BalancerMember http://192.168.1.103:80 status=+H
    ProxySet lbmethod=byrequests
&lt;/Proxy&gt;

&lt;VirtualHost *:80&gt;
    ServerName example.com
    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/
&lt;/VirtualHost&gt;
</code></pre>
<h3 id="caddy-web">Caddy 现代化Web服务器</h3>
<h4 id="_7">安装部署</h4>
<pre><code class="language-bash"># 使用官方安装脚本
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/setup.rpm.sh' | sudo -E bash
yum install -y caddy

# 或者下载二进制文件
wget https://github.com/caddyserver/caddy/releases/download/v2.6.4/caddy_2.6.4_linux_amd64.tar.gz
tar -xzf caddy_2.6.4_linux_amd64.tar.gz
mv caddy /usr/local/bin/

# 创建服务
cat &gt; /etc/systemd/system/caddy.service &lt;&lt; EOF
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target

[Service]
User=caddy
Group=caddy
ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
ExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target
EOF

# 创建用户
useradd -r -d /var/lib/caddy -s /sbin/nologin caddy
mkdir -p /etc/caddy /var/lib/caddy
chown -R caddy:caddy /etc/caddy /var/lib/caddy

# 启动服务
systemctl daemon-reload
systemctl start caddy
systemctl enable caddy
</code></pre>
<h4 id="_8">基本配置</h4>
<p>Caddy的主配置文件是<code>/etc/caddy/Caddyfile</code>：</p>
<pre><code class="language-caddy"># 基本网站配置
example.com {
    root * /var/www/example.com
    file_server

    # 日志配置
    log {
        output file /var/log/caddy/example.com.access.log
    }

    # PHP-FPM配置
    php_fastcgi localhost:9000

    # 压缩
    encode gzip
}
</code></pre>
<h4 id="https_2">自动HTTPS配置</h4>
<p>Caddy的主要特点是自动HTTPS，无需额外配置即可：</p>
<pre><code class="language-caddy">example.com {
    root * /var/www/example.com
    file_server

    # Caddy会自动申请和续期Let's Encrypt证书
    # 如果需要使用自定义证书
    tls /path/to/cert.pem /path/to/key.pem
}
</code></pre>
<h4 id="_9">反向代理配置</h4>
<pre><code class="language-caddy">api.example.com {
    reverse_proxy 192.168.1.101:8080

    # 带健康检查的负载均衡
    reverse_proxy {
        to 192.168.1.101:8080 192.168.1.102:8080
        health_path /health
        health_interval 10s
    }
}
</code></pre>
<h2 id="_10">反向代理与负载均衡</h2>
<h3 id="haproxy">HAProxy 高性能负载均衡器</h3>
<h4 id="_11">安装部署</h4>
<pre><code class="language-bash"># CentOS/RHEL系统
yum install -y haproxy

# Debian/Ubuntu系统
apt-get update
apt-get install -y haproxy

# 启动服务
systemctl start haproxy
systemctl enable haproxy
</code></pre>
<h4 id="_12">基本配置</h4>
<p>HAProxy的配置文件是<code>/etc/haproxy/haproxy.cfg</code>：</p>
<pre><code>global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

# 前端配置
frontend http_front
    bind *:80
    default_backend web_servers

    # ACL条件路由
    acl is_api path_beg /api
    use_backend api_servers if is_api

# 后端服务器配置
backend web_servers
    balance roundrobin
    server web1 192.168.1.101:80 check
    server web2 192.168.1.102:80 check
    server web3 192.168.1.103:80 check backup

backend api_servers
    balance leastconn
    server api1 192.168.1.201:8080 check
    server api2 192.168.1.202:8080 check

# 统计界面
listen stats
    bind *:8404
    stats enable
    stats uri /stats
    stats refresh 10s
    stats auth admin:password
</code></pre>
<h4 id="ssl">SSL终端配置</h4>
<pre><code>frontend https_front
    bind *:443 ssl crt /etc/haproxy/certs/example.pem
    reqadd X-Forwarded-Proto:\ https
    default_backend web_servers
</code></pre>
<p>生成合并的PEM文件：</p>
<pre><code class="language-bash">cat example.com.crt example.com.key &gt; /etc/haproxy/certs/example.pem
</code></pre>
<h4 id="_13">会话持久化配置</h4>
<pre><code>backend app_servers
    balance roundrobin
    cookie SERVERID insert indirect nocache
    server app1 192.168.1.101:8080 check cookie s1
    server app2 192.168.1.102:8080 check cookie s2
</code></pre>
<h3 id="squid">Squid 缓存代理</h3>
<h4 id="_14">安装部署</h4>
<pre><code class="language-bash"># CentOS/RHEL系统
yum install -y squid

# Debian/Ubuntu系统
apt-get update
apt-get install -y squid

# 启动服务
systemctl start squid
systemctl enable squid
</code></pre>
<h4 id="_15">基本配置</h4>
<p>Squid的主配置文件是<code>/etc/squid/squid.conf</code>：</p>
<pre><code># 基本配置
http_port 3128
cache_mem 256 MB
cache_dir ufs /var/spool/squid 1000 16 256
maximum_object_size 10 MB
access_log /var/log/squid/access.log

# 访问控制
acl localnet src 192.168.1.0/24
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all

# 缓存设置
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
</code></pre>
<h4 id="_16">透明代理配置</h4>
<pre><code># 配置Squid透明代理
http_port 3129 intercept

# 配置iptables转发流量到Squid
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3129
</code></pre>
<h4 id="_17">反向代理配置</h4>
<pre><code># 配置反向代理
http_port 80 accel defaultsite=example.com
cache_peer 192.168.1.101 parent 80 0 originserver name=server1
cache_peer 192.168.1.102 parent 80 0 originserver name=server2

# 域名到服务器的映射
acl site_example dstdomain example.com
http_access allow site_example
cache_peer_access server1 allow site_example
cache_peer_access server1 deny all
cache_peer_access server2 deny all
</code></pre>
<h3 id="traefik">Traefik 现代化边缘路由器</h3>
<h4 id="_18">安装部署</h4>
<pre><code class="language-bash"># 下载二进制文件
wget https://github.com/traefik/traefik/releases/download/v2.9.6/traefik_v2.9.6_linux_amd64.tar.gz
tar -xzf traefik_v2.9.6_linux_amd64.tar.gz
mv traefik /usr/local/bin/

# 创建配置目录
mkdir -p /etc/traefik
mkdir -p /etc/traefik/dynamic
mkdir -p /var/log/traefik

# 创建服务
cat &gt; /etc/systemd/system/traefik.service &lt;&lt; EOF
[Unit]
Description=Traefik
Documentation=https://doc.traefik.io/traefik/
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/traefik --configfile=/etc/traefik/traefik.yaml
Restart=on-failure
RestartSec=5
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target
EOF

# 创建基本配置
cat &gt; /etc/traefik/traefik.yaml &lt;&lt; EOF
global:
  checkNewVersion: true
  sendAnonymousUsage: false

log:
  level: INFO
  filePath: &quot;/var/log/traefik/traefik.log&quot;

accessLog:
  filePath: &quot;/var/log/traefik/access.log&quot;

entryPoints:
  web:
    address: &quot;:80&quot;

  websecure:
    address: &quot;:443&quot;

providers:
  file:
    directory: &quot;/etc/traefik/dynamic&quot;
    watch: true

api:
  dashboard: true
  insecure: true
EOF

# 启动服务
systemctl daemon-reload
systemctl start traefik
systemctl enable traefik
</code></pre>
<h4 id="_19">基本路由配置</h4>
<p>创建<code>/etc/traefik/dynamic/services.yaml</code>：</p>
<pre><code class="language-yaml">http:
  routers:
    web-router:
      rule: &quot;Host(`example.com`)&quot;
      service: &quot;web-service&quot;
      entryPoints:
        - web

  services:
    web-service:
      loadBalancer:
        servers:
          - url: &quot;http://192.168.1.101:80&quot;
          - url: &quot;http://192.168.1.102:80&quot;
</code></pre>
<h4 id="https_3">自动HTTPS配置</h4>
<p>更新主配置<code>/etc/traefik/traefik.yaml</code>：</p>
<pre><code class="language-yaml">certificatesResolvers:
  letsencrypt:
    acme:
      email: &quot;admin@example.com&quot;
      storage: &quot;/etc/traefik/acme.json&quot;
      httpChallenge:
        entryPoint: &quot;web&quot;
</code></pre>
<p>然后更新<code>/etc/traefik/dynamic/services.yaml</code>：</p>
<pre><code class="language-yaml">http:
  routers:
    web-router:
      rule: &quot;Host(`example.com`)&quot;
      service: &quot;web-service&quot;
      entryPoints:
        - web
      middlewares:
        - redirect-to-https

    websecure-router:
      rule: &quot;Host(`example.com`)&quot;
      service: &quot;web-service&quot;
      entryPoints:
        - websecure
      tls:
        certResolver: &quot;letsencrypt&quot;

  middlewares:
    redirect-to-https:
      redirectScheme:
        scheme: &quot;https&quot;
        permanent: true
</code></pre>
<h4 id="docker">Docker集成配置</h4>
<p>启用Docker Provider：</p>
<pre><code class="language-yaml">providers:
  docker:
    endpoint: &quot;unix:///var/run/docker.sock&quot;
    exposedByDefault: false
</code></pre>
<p>容器标签配置示例：</p>
<pre><code class="language-bash">docker run -d \
  --name nginx \
  --label &quot;traefik.enable=true&quot; \
  --label &quot;traefik.http.routers.nginx.rule=Host(`example.com`)&quot; \
  --label &quot;traefik.http.routers.nginx.entrypoints=web&quot; \
  --network traefik_network \
  nginx:latest
</code></pre>
<h2 id="web_2">Web应用防火墙</h2>
<h3 id="modsecurity-apachenginx-waf">ModSecurity (Apache/Nginx WAF)</h3>
<h4 id="apache">安装部署(Apache)</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y mod_security

# Debian/Ubuntu
apt-get update
apt-get install -y libapache2-mod-security2
</code></pre>
<h4 id="nginx">安装部署(Nginx)</h4>
<pre><code class="language-bash"># 安装依赖
apt-get install -y git build-essential libpcre3-dev libxml2-dev libyajl-dev liblmdb-dev libgeoip-dev libcurl4-openssl-dev libpcre++-dev pkgconf libtool dh-autoreconf libssl-dev zlib1g-dev libxslt-dev libgd-dev

# 克隆ModSecurity
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git submodule init
git submodule update
./build.sh
./configure
make
make install

# 克隆Nginx连接器
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git

# 获取Nginx版本
nginx -v
# 下载对应Nginx源码
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -xzf nginx-1.18.0.tar.gz
cd nginx-1.18.0

# 配置并编译
./configure --with-compat --add-dynamic-module=../ModSecurity-nginx
make modules
cp objs/ngx_http_modsecurity_module.so /usr/lib/nginx/modules/
</code></pre>
<h4 id="apache_1">基本配置(Apache)</h4>
<pre><code class="language-apache"># 在Apache配置中添加
&lt;IfModule security2_module&gt;
    SecRuleEngine On
    SecRequestBodyAccess On
    SecResponseBodyAccess On

    # 包含OWASP核心规则集
    Include /usr/share/modsecurity-crs/owasp-crs.load
&lt;/IfModule&gt;
</code></pre>
<h4 id="nginx_1">基本配置(Nginx)</h4>
<pre><code class="language-nginx"># 加载模块
load_module modules/ngx_http_modsecurity_module.so;

# 在server或location中启用
server {
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity/main.conf;
}
</code></pre>
<p>主配置文件<code>/etc/nginx/modsecurity/main.conf</code>：</p>
<pre><code># 启用ModSecurity
SecRuleEngine On

# 包含OWASP核心规则集
Include /usr/share/modsecurity-crs/owasp-crs.load
</code></pre>
<h3 id="naxsi-nginx-waf">NAXSI (Nginx WAF)</h3>
<h4 id="_20">安装部署</h4>
<pre><code class="language-bash"># 获取Nginx版本
nginx -v

# 下载对应Nginx源码和NAXSI
wget http://nginx.org/download/nginx-1.18.0.tar.gz
git clone https://github.com/nbs-system/naxsi.git

# 解压Nginx
tar -xzf nginx-1.18.0.tar.gz
cd nginx-1.18.0

# 配置并编译
./configure --add-module=../naxsi/naxsi_src
make
make install
</code></pre>
<h4 id="_21">基本配置</h4>
<pre><code class="language-nginx"># 在http块中引入NAXSI规则
http {
    include /path/to/naxsi_core.rules;

    server {
        # 启用NAXSI
        location / {
            SecRulesEnabled;
            DeniedUrl &quot;/RequestDenied&quot;;

            # 包含自定义规则
            include /path/to/naxsi.rules;

            # 正常代理配置
            proxy_pass http://backend;
        }

        # 拒绝页面
        location /RequestDenied {
            return 403 &quot;Access Denied&quot;;
        }
    }
}
</code></pre>
<h2 id="web_3">Web性能优化</h2>
<h3 id="varnish">Varnish 缓存加速器</h3>
<h4 id="_22">安装部署</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y epel-release
yum install -y varnish

# Debian/Ubuntu
apt-get update
apt-get install -y varnish
</code></pre>
<h4 id="_23">基本配置</h4>
<p>Varnish配置文件<code>/etc/varnish/default.vcl</code>：</p>
<pre><code class="language-vcl">vcl 4.0;

# 后端服务器定义
backend default {
    .host = &quot;192.168.1.101&quot;;
    .port = &quot;80&quot;;
}

# 进入子例程
sub vcl_recv {
    # 不缓存管理页面
    if (req.url ~ &quot;^/admin&quot;) {
        return (pass);
    }

    # 忽略请求头中的Cookie来提高缓存命中率
    if (req.url ~ &quot;\.(css|js|jpg|jpeg|png|gif|ico)$&quot;) {
        unset req.http.Cookie;
    }
}

# 缓存命中响应
sub vcl_hit {
    return (deliver);
}

# 缓存未命中时的处理
sub vcl_miss {
    return (fetch);
}

# 缓存传递
sub vcl_pass {
    return (fetch);
}

# 缓存后端响应
sub vcl_backend_response {
    # 静态文件缓存时间设置
    if (bereq.url ~ &quot;\.(css|js)$&quot;) {
        set beresp.ttl = 24h;
    } elsif (bereq.url ~ &quot;\.(jpg|jpeg|png|gif|ico)$&quot;) {
        set beresp.ttl = 48h;
    } else {
        set beresp.ttl = 1h;
    }

    # 确保不会缓存管理页面
    if (bereq.url ~ &quot;^/admin&quot;) {
        set beresp.uncacheable = true;
        return (deliver);
    }

    return (deliver);
}

# 传递响应给客户端
sub vcl_deliver {
    # 添加缓存状态头
    if (obj.hits &gt; 0) {
        set resp.http.X-Cache = &quot;HIT&quot;;
    } else {
        set resp.http.X-Cache = &quot;MISS&quot;;
    }

    return (deliver);
}
</code></pre>
<h3 id="nginx-pagespeed">Nginx PageSpeed模块</h3>
<h4 id="_24">安装部署</h4>
<pre><code class="language-bash"># 下载ngx_pagespeed
NPS_VERSION=1.13.35.2-stable
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.tar.gz
tar -xzf v${NPS_VERSION}.tar.gz

# 下载psol库
cd incubator-pagespeed-ngx-${NPS_VERSION}/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzf ${NPS_VERSION}.tar.gz

# 获取Nginx版本并下载
nginx -v
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -xzf nginx-1.18.0.tar.gz
cd nginx-1.18.0

# 配置并编译
./configure --add-module=../incubator-pagespeed-ngx-${NPS_VERSION}
make
make install
</code></pre>
<h4 id="_25">基本配置</h4>
<pre><code class="language-nginx">http {
    # 启用PageSpeed
    pagespeed on;

    # 缓存路径
    pagespeed FileCachePath /var/cache/ngx_pagespeed;

    # 启用过滤器
    pagespeed EnableFilters combine_css,combine_javascript;
    pagespeed EnableFilters collapse_whitespace,remove_comments;
    pagespeed EnableFilters inline_css,inline_javascript;
    pagespeed EnableFilters lazyload_images;
    pagespeed EnableFilters rewrite_images;

    server {
        listen 80;
        server_name example.com;

        # 允许从此域名加载资源
        pagespeed Domain example.com;

        # 统计页面
        location /ngx_pagespeed_statistics {
            allow 127.0.0.1;
            deny all;
        }

        # 正常网站配置
        location / {
            proxy_pass http://backend;
        }
    }
}
</code></pre>












                
              </article>
            </div>
          
          
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
        </div>
        
      </main>
      
        <footer class="md-footer">
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
        <div class="md-social">
  
    
    
    
    
      
      
    
    <a href="https://git.opsx.vip/docs/PythonFullStackGuide.git" target="_blank" rel="noopener" title="git.opsx.vip" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
    </a>
  
    
    
    
    
    <a href="mailto:admin@attacker.club" target="_blank" rel="noopener" title="" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4l217.6 163.2c11.4 8.5 27 8.5 38.4 0l217.6-163.2c12.1-9.1 19.2-23.3 19.2-38.4 0-26.5-21.5-48-48-48zM0 176v208c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V176L294.4 339.2a63.9 63.9 0 0 1-76.8 0z"/></svg>
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
    
    <script id="__config" type="application/json">{"base": "../..", "features": [], "search": "../../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
    
    
      <script src="../../assets/javascripts/bundle.60a45f97.min.js"></script>
      
        <script src="../../js/prism.js"></script>
      
    
  </body>
</html>